A computer network is a collection of interconnected computing devices that can exchange data and share resources. In a packet-based network, such as an Ethernet network, the computing devices communicate data by dividing the data into small blocks called packets, which are individually routed across the network from a source device to a destination device. The destination device extracts the data from the packets and assembles the data into its original form. Dividing the data into packets enables the source device to resend only those individual packets that may be lost during transmission.
Certain devices, referred to as routers, maintain tables of routing information that describe routes through the network. A “route” can generally be defined as a path between two locations on the network. Upon receiving an incoming data packet, the router examines destination information within the packet to identify the destination for the packet. Based on the destination, the router forwards the packet in accordance with the routing table.
The router periodically receives packets that do not need to be forwarded to other destinations, but that need to be processed by the router. For example, the router may support a number of protocols, such as the Border Gateway Protocol (BGP), for exchanging route information with other routing devices. The router processes the BGP packets and updates the routing table. In addition, the router may be configured to support a number of other network protocols. For example, the router may support Address Resolution Protocol (ARP), which is a TCP/IP-based protocol for converting an IP address into a physical address, such as an Ethernet address. As another example, the router may support Telnet or other similar protocols to provide an interface for remote configuration.
To support these protocols, a conventional router typically includes a number of software processes executing on a processor. A routing process, for example, may include one or more threads that implement the various protocols supported by the router. In particular, the process may include threads that implement protocols for exchanging route information with other routing devices and for updating the routing table. The routing process may also include threads to support other protocols, such as threads that implement a TCP/IP network stack.
The router typically includes additional software processes, such as a software process that controls the physical configuration of the router. This process, often referred to as chassis manager, is responsible for managing the physical configuration of the router, such as the powering up the router, recognizing the hardware components of the router, bringing hardware components to a functional state to allow for setup of the logical components, and the like. The concurrently executing software processes of conventional routers can be susceptible to failure. If one software process malfunctions, possibly due a programming bug, the functionality of the other software processes can be affected, or even halted. This also implies a limitation of CPU bandwidth as all the concurrently executing processes are competing for the same CPU bandwidth.